package com.wfs.excel;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.write.metadata.WriteSheet;
import org.junit.Test;


import java.io.File;
import java.io.InputStream;
import java.util.*;

/**
 * @author wfs
 * @date 2020/12/7 19:33
 * 导入测试
 */

public class ImportBillsTest{



    public static final String fileName=" \\账单修复合并模板.xlsx";

    /**
     * 最简单的读
     * <p>
     * 1. 创建excel对应的实体对象
     * <p>
     * 2. 由于默认一行行的读取excel，所以需要创建excel一行一行的回调监听器，
     * <p>
     * 3. 直接读即可
     */
    @Test
    public void simpleRead() {
        // 有个很重要的点 DemoDataListener 不能被spring管理，要每次读取excel都要new,然后里面用到spring可以构造方法传进去
        // 写法1：

        // 这里 需要指定读用哪个class去读，然后读取第一个sheet 文件流会自动关闭 需要创建对象
        //EasyExcel.read(fileName, DemoData.class, new DemoDataListener()).sheet().headRowNumber(1).doRead();
        //不创建对象的读
        // 这里 只要，然后读取第一个sheet 同步读取会自动finish
        Map<String, String > basicMap=new HashMap<>();
        basicMap.put("单号","billCode");
        basicMap.put("结算重量","weight");
        basicMap.put("目的地市","cityName");
        EasyExcel.read(fileName, new NoModelDataListener(basicMap)).sheet().headRowNumber(1).doRead();

    }
    @Test
    public void inmportUserDao(){
        ModelDataListener modelDataListener=new ModelDataListener();
        File file=new File("C:\\Users\\admin\\Desktop\\用户模板.xls");
        EasyExcel.read(file, UserDO.class, modelDataListener).sheet(0).doRead();
        List<UserDO> data = modelDataListener.getData();
        //执行插入操作
        System.out.println(data);

    }
    @Test
    public void export(){
        File file=new File("C:\\Users\\wfs\\Desktop\\测试.xlsx");
        File destFile=new File("C:\\Users\\wfs\\Desktop\\测试1.xlsx");
        ModelDataListener modelDataListener=new ModelDataListener();
        EasyExcel.write(file, UserDO.class)
                .withTemplate(file)
                .file(destFile)
                .sheet(1,"模板1")
                .doWrite(Arrays.asList(modelDataListener));

    }

}
